- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин
Шрифт:
Интервал:
Закладка:
То есть значения столбиков – это суммарные значения серий.
В этой диаграмме нужно внимательно устанавливать верхнее ограничение значений по числовой оси.
Кроме того, в этой диаграмме отсутствует свойство barGap, есть только свойство categoryGap.
Класс BubbleChart представляет пузырьковую диаграмму с числовыми осями NumberAxis.
Класс BubbleChart имеет, помимо унаследованных от класса Chart, свойства, унаследованные от класса XYChart.
Для диаграммы BubbleChart можно использовать свойство extraValue класса XYChart. Data, с помощью которого можно регулировать размер пузырька диаграммы.
Приведенный здесь код демонстрирует пример создания пузырьковой диаграммы.
Для диаграммы BubbleChart создаются горизонтальная и вертикальная оси NumberAxis, для которых определяются такие свойства как подпись оси, цвет подписей к меткам оси и так далее.
Диаграмма BubbleChart помещается в левый верхний угол и для нее устанавливаются такие свойства как курсор мышки, стиль, предпочтительные размеры, заголовок и его расположение, отображение и расположение панели пояснений к диаграмме, отсутствие выделения через один столбцов и строк сетки диаграммы, отображение вертикальных линий сетки диаграммы.
Для диаграммы BubbleChart создаются три именованные серии данных, элементы которых после добавления в диаграмму масштабируются по вертикали.
Класс LineChart представляет диаграммы двухмерных графиков, которые отличаются от диаграмм AreaChart тем, что области под графиками не выделены цветом.
Класс LineChart имеет, помимо унаследованных от класса Chart, свойства, унаследованные от класса XYChart и собственное свойство createSymbols.
Если свойство createSymbols установлено со значением false, тогда элементы данных никак не выделяются на графике, который отображается в виде тренда.
Приведенный здесь код демонстрирует пример создания диаграммы с графиками.
Для диаграммы LineChart создаются горизонтальная ось CategoryAxis и вертикальная ось NumberAxis, для которых определяются такие свойства как подпись оси, цвет подписей к меткам оси и так далее.
Диаграмма LineChart помещается в левый верхний угол и для нее устанавливаются такие свойства как курсор мышки, стиль, предпочтительные размеры, заголовок и его расположение, отображение и расположение панели пояснений к диаграмме, выделение через один столбцов сетки диаграммы, отображение линий сетки диаграммы и отображение графиков в виде трендов.
Для диаграммы LineChart создаются две именованные серии данных.
Здесь мы создаем три узла данных серии, представленные текстом.
И заполняем серию данными с использованием этих узлов.
При этом числовые данные оси Y привязываются к строковым категориям оси X.
В конце серии добавляются в диаграмму.
Класс ScatterChart представляет диаграмму рассеяния, используемую для исследования зависимости между двумя видами данных.
Класс ScatterChart имеет, помимо унаследованных от класса Chart, свойства, унаследованные от класса XYChart.
Приведенный здесь код демонстрирует пример создания диаграммы рассеяния.
Для диаграммы ScatterChart создаются горизонтальная и вертикальная оси NumberAxis, для которых определяются такие свойства как подпись оси, цвет подписей к меткам оси и так далее.
Диаграмма ScatterChart помещается в левый верхний угол и для нее устанавливаются такие свойства как курсор мышки, стиль, предпочтительные размеры, заголовок и его расположение, отображение и расположение панели пояснений к диаграмме, выделение через один столбцов сетки диаграммы и отображение линий сетки диаграммы.
Для диаграммы ScatterChart создаются две именованные серии данных.
И эти серии добавляются в диаграмму.
Выполнение фоновых задач
Для выполнения определенной работы, занимающей значительное время процессора, в отдельном потоке от потока JavaFX Application Thread, для того чтобы не блокировать GUI-интерфейс JavaFX-приложения, платформа JavaFX предлагает использовать пакет concurrent.
Граф сцены JavaFX, представляющий графический пользовательский интерфейс приложения JavaFX, не является потокобезопасным и может быть доступен и изменен только из потока пользовательского интерфейса JavaFX Application Thread.
Реализация долго выполняющихся задач в потоке приложения JavaFX неизбежно делает пользовательский интерфейс приложения невосприимчивым.
Поэтому лучшей практикой является выполнение этих задач на одном или нескольких фоновых потоках и использование потока приложения JavaFX для обработки пользовательских событий.
Работу с фоновыми потоками пакет concurrent обеспечивает с помощью двух абстрактных классов Task и Service, реализующих интерфейс Worker.
Интерфейс Worker определяет объект, который выполняет некоторую работу в одном или нескольких фоновых потоках.
Состояние объекта Worker является наблюдаемым и может использоваться из потока приложения JavaFX.
Жизненный цикл объекта Worker определяется следующим образом.
При создании объект Worker находится в состоянии READY.
При планировании работы объект Worker переходит в состояние SCHEDULED.
После этого, когда объект Worker выполняет работу, его состояние становится RUNNING.
Даже когда объект Worker немедленно запускается без планирования, он сначала переходит в состояние SCHEDULED, а затем в состояние RUNNING.
Состояние объекта Worker, которое завершается успешно, является SUCCEEDED, а свойство value установлено как результат этого объекта Worker.
В противном случае, если во время выполнения объекта Worker выбрасываются какие-либо исключения, его состояние становится FAILED, а для свойства исключения устанавливается тип произошедшего исключения.
В любое время, до завершения объекта Worker разработчик может прервать его, вызвав метод cancel, который помещает объект Worker в состояние CANCELED.
Прогресс работы, выполняемый объектом Worker, может быть получен с помощью трех различных свойств, таких как totalWork, workDone и progress.
Абстрактный класс Task расширяет класс java.util.concurrent. FutureTask, и конкретные реализации абстрактного класса Task должны переопределять его метод call, вызываемый средой выполнения в фоновом потоке.
Результатом выполнения задачи Task в фоновом потоке является объект V, возвращаемый методом call.
Результат выполнения фоновой задачи может быть получен с помощью метода getValue класса Task.
В методе call разрешено вызывать только методы updateProgress, updateMessage и updateTitle класса Task, обновляющие текущее количественное выполнение задачи, максимальное количественное выполнение задачи, текущее процентное выполнение задачи, сообщение, связанное с текущим состоянием выполнения задачи, и заголовок данной задачи.
В то время как метод call выполняется в фоновом потоке, методы updateProgress, updateMessage и updateTitle класса Task выполняются в потоке JavaFX Application Thread.
Поэтому, переопределяя данные методы в конкретной реализации абстрактного класса Task и обеспечивая их вызов в методе call, можно передавать значения свойств workDone, totalWork, progress, message и title из фонового потока в поток JavaFX Application Thread.
Запуск экземпляра пользовательского класса, расширяющего класс Task, и соответственно вызов его метода call может быть выполнен различными способами.
Так как класс Task расширяет класс FutureTask, то запуск его экземпляра может быть осуществлен с помощью объекта java.lang.Thread.
Запуск объекта Task также может быть произведен с помощью программного интерфейса Java Executor API.
В этом случае необходимо создать объект java.util.concurrent. ExecutorService с помощью класса-фабрики java.util.concurrent. Executors и воспользоваться методом submit интерфейса ExecutorService для запуска объекта Task.
Для завершения работы объекта ExecutorService нужно применить метод shutdown интерфейса ExecutorService.
Помимо перечисленных выше способов, создание и запуск объекта Task обеспечивает сервисный класс Service пакета concurrent.
Абстрактный класс Service также необходимо расширять конкретной реализацией с переопределением его метода createTask, возвращающего объект Task.

